/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.EstadoEquipo;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Eugenio
 */
public class ManejadorDeEstadoEquipo implements Manejador {


    private PreparedStatement ps;
    private ResultSet rs;
    private Conexion con;
    private ArrayList<EstadoEquipo> estadoEquipos;
    private static ManejadorDeEstadoEquipo instancia;
    

    public ManejadorDeEstadoEquipo (){
        con=Conexion.getInstancia();
    }

    public static ManejadorDeEstadoEquipo getInstancia(){
        if(instancia==null){
            instancia=new ManejadorDeEstadoEquipo();
        }
        return instancia;
    }

    public int agregar(Entidad estadoEquipo) {
        int fila =0;
        String sql ="INSERT INTO estado_equipo (id_estado_centro,tipo_equipo,cantidad_instalada,cantidad_funcionando,"+
                     "cantidad_dañados,tiempo) VALUES (0,?,?,?, ?, ?, );";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
        try {
            ps.setInt(1, ((EstadoEquipo) (estadoEquipo)).getIdEstadoCentro());
            ps.setString(2, ((EstadoEquipo)(estadoEquipo)).getTipoEquipo());
            ps.setInt(3, ((EstadoEquipo) (estadoEquipo)).getCantidadInstalada());
            ps.setInt(4, ((EstadoEquipo) (estadoEquipo)).getCantidadFuncionando());
            ps.setInt(5, ((EstadoEquipo) (estadoEquipo)).getCantidadDañados());
            ps.setString(6, ((EstadoEquipo)(estadoEquipo)).getTiempo());
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeEstadoEquipo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;

    }

    public int eliminar(int id) {
        int fila =0;
        String sql ="DELETE FROM estado_equipo WHERE id_estado_equipo = ? ";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
        try {
            ps.setInt(1, id);
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeEstadoEquipo.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;
    }

    public int modificar(Entidad estadoEquipo, int id) {

        int fila =0;
        String sql="UPDATE estado_equipo SET id_estado_centro = ?,tipo_equipo = ?,cantidad_instalada = ?,"+
                    "cantidad_funcionando = ?, cantidad_dañados = ?, tiempo = ? WHERE id_estado_equipo = ?;";
        ps=(PreparedStatement)con.hacerEnunciado(sql);
        try {
            ps.setInt(1, ((EstadoEquipo) (estadoEquipo)).getIdEstadoCentro());
            ps.setString(2, ((EstadoEquipo)(estadoEquipo)).getTipoEquipo());
            ps.setInt(3, ((EstadoEquipo) (estadoEquipo)).getCantidadInstalada());
            ps.setInt(4, ((EstadoEquipo) (estadoEquipo)).getCantidadFuncionando());
            ps.setInt(5, ((EstadoEquipo) (estadoEquipo)).getCantidadDañados());
            ps.setString(6, ((EstadoEquipo)(estadoEquipo)).getTiempo());
            ps.setInt(7, id);
            fila=ps.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeEstadoEquipo.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return fila;
    }

    public ArrayList<EstadoEquipo> getEstadoEquipos(){

        String sql="SELECT * FROM estado_equipo";
        rs=con.hacerConsulta(sql);
        try {
            while (rs.next()) {
                EstadoEquipo estadoEquipo = new EstadoEquipo(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getInt(4), rs.getInt(5), rs.getInt(6), rs.getString(7));
                estadoEquipos.add(estadoEquipo);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeEstadoEquipo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return estadoEquipos;
    }

}
